﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using MySql.Data;
using MySql.Data.MySqlClient;
using System.Windows.Forms;
using System.Diagnostics;

namespace Arthus
{
    //tabele Partneri, Parziro, Parktkt
    class Partneri
    {
        MySqlConnection konekcija;
        MySqlCommand komanda = new MySqlCommand();
        MySqlDataReader datareader = null;
        MySqlDataAdapter adapter = null;
        DataTable dataTable = null;
        DataSet dataSet = null;

        Partneri partneriObjekat = null;
        partneriForma partneriFormaObjekat = null;
        Region regionObjekat = null;

        public String VratiOznakuPartneraNaOsnovuID(int idPartnera)
        {
            String rezultat = "";
            if (idPartnera != 0)
            {
                try
                {
                    //rezultat ako je idPartnera razlicit od nule
                    //konekcija sa bazom i punjenje dataset-a
                    konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                    konekcija.Open();
                    komanda.Connection = konekcija;
                    komanda.CommandText = "SELECT partnerozn FROM partneri WHERE partnerid=" + idPartnera;
                    datareader = komanda.ExecuteReader();
                    while (datareader.Read())
                    {
                        rezultat = datareader.GetValue(0).ToString();
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                }
                finally
                {
                    datareader.Close();
                    konekcija.Close();
                }
            }
            else
            {
                //rezultat ako nije idPartnera razlicit od nule
                rezultat = "";
            }
            return rezultat;
        }

        public void PopuniDataGridViewPartneri(DataGridView dataGridViewPartneri, String uslovUpita)
        {
            try
            {
                //ciscenje i spremanje datagridview-a
                dataGridViewPartneri.DataSource = null;
                dataGridViewPartneri.Rows.Clear();
                dataGridViewPartneri.Refresh();

                //konekcija sa bazom i punjenje datatable-a
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                komanda.Connection = konekcija;
                if (uslovUpita.Trim().Length <= 0)
                {//rezultat ukoliko je uslovUpita prazan
                    komanda.CommandText = "SELECT PARTNERID, PARTNEROZN, PARTNERMES, PARTNERPIB FROM PARTNERI ORDER BY PARTNEROZN";
                }
                else
                {
                    komanda.CommandText = "SELECT PARTNERID, PARTNEROZN, PARTNERMES, PARTNERPIB FROM PARTNERI WHERE PARTNEROZN LIKE('%" + uslovUpita + "%') ORDER BY PARTNEROZN";
                }
                dataTable = new DataTable();
                adapter = new MySqlDataAdapter();
                adapter.SelectCommand = komanda;
                adapter.Fill(dataTable);

                adapter.Dispose();
                konekcija.Close();

                for (int i = 0; i < dataTable.Rows.Count; i++)
                {
                    dataGridViewPartneri.Rows.Add(dataTable.Rows[i][0], dataTable.Rows[i][1], dataTable.Rows[i][2], dataTable.Rows[i][3]);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                dataTable.Clear();
                adapter.Dispose();
                konekcija.Close();
            }
        }

        public void ObrisiPartneraPremaID(int idPartnera)
        {
            //brisi ziro racun partnera ako ga ima BEGIN
            try
            {
                List<int> listaIDParziro = new List<int>();
                //konekcija sa bazom i punjenje datatable-a
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandText = "SELECT PARZIROID FROM PARZIRO WHERE PARZIROPAR=" + idPartnera + "";
                datareader = komanda.ExecuteReader();
                while (datareader.Read())
                {
                    listaIDParziro.Add(Convert.ToInt32(datareader[0].ToString()));
                }
                konekcija.Close();

                if (listaIDParziro.Count > 0)
                {
                    konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                    konekcija.Open();
                    komanda.Connection = konekcija;
                    komanda.CommandType = CommandType.Text;
                    for (int i = 0; i < listaIDParziro.Count; i++)
                    {
                        komanda.CommandText = "DELETE FROM PARZIRO WHERE PARZIROID=" + Convert.ToInt32(listaIDParziro[i].ToString()) + " ;";
                        komanda.ExecuteNonQuery();
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                konekcija.Close();
            }
            //brisi ziro racun partnera ako ga ima END

            try
            {
                List<int> listaIDParktkt = new List<int>();
                //konekcija sa bazom i punjenje datatable-a
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandText = "SELECT `PARKTKTID` FROM `parktkt` WHERE PARKTKTPAR=" + idPartnera + "";
                datareader = komanda.ExecuteReader();
                while (datareader.Read())
                {
                    listaIDParktkt.Add(Convert.ToInt32(datareader[0].ToString()));
                }
                konekcija.Close();

                if (listaIDParktkt.Count > 0)
                {
                    konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                    konekcija.Open();
                    komanda.Connection = konekcija;
                    komanda.CommandType = CommandType.Text;
                    for (int i = 0; i < listaIDParktkt.Count; i++)
                    {
                        komanda.CommandText = "DELETE FROM PARKTKT WHERE PARKTKTID=" + Convert.ToInt32(listaIDParktkt[i].ToString()) + " ;";
                        komanda.ExecuteNonQuery();
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                konekcija.Close();
            }

            try
            {
                //konekcija sa bazom
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = "DELETE FROM PARTNERI WHERE PARTNERID=" + idPartnera + " ;";
                komanda.ExecuteNonQuery();
                MessageBox.Show("Partner je uspešno obrisan!");
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                konekcija.Close();
            }
        }

        //za kontakte partnera
        public int VratiPovecanIDKontakta()
        {
            int rezultat = 0;

            try
            {
                //konekcija sa bazom
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = "SELECT MAX(PARKTKTID) FROM PARKTKT;";
                datareader = komanda.ExecuteReader();
                datareader.Read();
                rezultat = Convert.ToInt32(datareader.GetValue(0));
                rezultat++;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                datareader.Close();
                konekcija.Close();
            }
            return rezultat;
        }
        public void PopuniKontroleUKontaktFormi(String idKontakta, TextBox ime, TextBox tel, TextBox fax, TextBox www, TextBox email, TextBox opi)
        {
            if (idKontakta.Length > 0)
            {
                try
                {
                    konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                    konekcija.Open();
                    komanda.Connection = konekcija;
                    komanda.CommandText = "SELECT PARKTKTIME, PARKTKTTEL, PARKTKTFAX, PARKTKTWWW, PARKTKTEML, PARKTKTOPI FROM PARKTKT WHERE PARKTKTID="
                        + Convert.ToInt32(idKontakta) + "";
                    datareader = komanda.ExecuteReader();
                    while (datareader.Read())
                    {
                        ime.Text = datareader.GetValue(0).ToString();
                        tel.Text = datareader.GetValue(1).ToString();
                        fax.Text = datareader.GetValue(2).ToString();
                        www.Text = datareader.GetValue(3).ToString();
                        email.Text = datareader.GetValue(4).ToString();
                        opi.Text = datareader.GetValue(5).ToString();
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                }
                finally
                {
                    datareader.Close();
                    konekcija.Close();
                }
            }
        }
        public void DodajIliIzmeniKontakt(String idKontakta, String idPartnera, TextBox ime, TextBox tel, TextBox www, TextBox email, TextBox opi, TextBox fax)
        {
            if (ime.Text.Trim().Length > 0)
            {
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                if (idKontakta.Length > 0)
                {
                    //ovde ide izmena
                    komanda.CommandText = @"UPDATE `parktkt` SET `PARKTKTIME`='" + ime.Text + "',`PARKTKTTEL`='" + tel.Text + "',`PARKTKTFAX`='" + fax.Text + "',`PARKTKTWWW`='"
                        + www.Text + "',`PARKTKTEML`='" + email.Text + "',`PARKTKTOPI`='" + opi.Text + "' WHERE PARKTKTID=" + Convert.ToInt32(idKontakta) + ";";
                    int response = komanda.ExecuteNonQuery();
                    MessageBox.Show("Kontakt je uspešno izmenjen!");
                }
                else
                {
                    //ovde ide dodavanje
                    partneriObjekat = new Partneri();
                    komanda.CommandText = string.Format("INSERT INTO `parktkt`(`PARKTKTID`, `PARKTKTPAR`, `PARKTKTIME`, `PARKTKTTEL`, `PARKTKTFAX`, `PARKTKTWWW`, "
                        + "`PARKTKTEML`, `PARKTKTOPI`) VALUES (" + partneriObjekat.VratiPovecanIDKontakta() + "," + Convert.ToInt32(idPartnera) + ",'" + ime.Text + "','" + tel.Text + "','"
                        + fax.Text + "','" + www.Text + "','" + email.Text + "','" + opi.Text + "')");
                    int response = komanda.ExecuteNonQuery();
                    MessageBox.Show("Uspešno dodat novi kontakt");
                }
            }
            else
            {
                MessageBox.Show("Morate popuniti obavezno polje ime");
            }

        }
        public void ObrisiKontaktPremaID(String idKontakta)
        {
            try
            {
                //konekcija sa bazom
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = "DELETE FROM PARKTKT WHERE PARKTKTID=" + Convert.ToInt32(idKontakta) + " ;";
                komanda.ExecuteNonQuery();
                MessageBox.Show("Kontakt je uspešno obrisan!");
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                konekcija.Close();
            }
        }
        public void PopuniDataGridViewKontakti(DataGridView kontakti, String idPartnera)
        {
            if (idPartnera.Length > 0)
            {
                try
                {
                    //ciscenje i spremanje datagridview-a
                    kontakti.DataSource = null;
                    kontakti.Rows.Clear();
                    kontakti.Refresh();

                    //konekcija sa bazom i punjenje datatable-a
                    konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                    komanda.Connection = konekcija;
                    komanda.CommandText = "SELECT PARKTKTID, `PARKTKTIME`, `PARKTKTTEL`, `PARKTKTEML` FROM `parktkt` WHERE PARKTKTPAR=" + Convert.ToInt32(idPartnera) + ";";
                    dataTable = new DataTable();
                    adapter = new MySqlDataAdapter();
                    adapter.SelectCommand = komanda;
                    adapter.Fill(dataTable);

                    adapter.Dispose();
                    konekcija.Close();

                    for (int i = 0; i < dataTable.Rows.Count; i++)
                    {
                        kontakti.Rows.Add(dataTable.Rows[i][0], dataTable.Rows[i][1], dataTable.Rows[i][2], dataTable.Rows[i][3]);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                }
                finally
                {
                    dataTable.Clear();
                    adapter.Dispose();
                    konekcija.Close();
                }
            }
        }

        //za racune partnera
        public int VratiPovecanIDRacuna()
        {
            int rezultat = 0;

            try
            {
                //konekcija sa bazom
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = "SELECT MAX(PARZIROID) FROM PARZIRO;";
                datareader = komanda.ExecuteReader();
                datareader.Read();
                rezultat = Convert.ToInt32(datareader.GetValue(0));
                rezultat++;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                datareader.Close();
                konekcija.Close();
            }
            return rezultat;
        }
        public void PopuniKontroleURacunFormi(String idRacuna, TextBox brojZiroRacuna, TextBox pozivNaBroj, TextBox banka)
        {
            if (idRacuna.Length > 0)
            {
                try
                {
                    konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                    konekcija.Open();
                    komanda.Connection = konekcija;
                    komanda.CommandText = "SELECT PARZIROOZN, PARZIROPNB, PARZIROBAN FROM PARZIRO WHERE PARZIROID="
                        + Convert.ToInt32(idRacuna) + "";
                    datareader = komanda.ExecuteReader();
                    while (datareader.Read())
                    {
                        brojZiroRacuna.Text = datareader.GetValue(0).ToString();
                        pozivNaBroj.Text = datareader.GetValue(1).ToString();
                        banka.Text = datareader.GetValue(2).ToString();
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                }
                finally
                {
                    datareader.Close();
                    konekcija.Close();
                }
            }
        }
        public void DodajIliIzmeniRacun(String idRacuna, String idPartnera, TextBox brojZiroRacuna, TextBox pozivNaBroj, TextBox banka)
        {
            if (brojZiroRacuna.Text.Trim().Length > 0)
            {
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                if (idRacuna.Length > 0)
                {
                    //ovde ide izmena
                    komanda.CommandText = @"UPDATE `parziro` SET `PARZIROOZN`='" + brojZiroRacuna.Text + "',`PARZIROPNB`='" + pozivNaBroj.Text + "',`PARZIROBAN`='"
                        + banka.Text + "' WHERE PARZIROID=" + Convert.ToInt32(idRacuna) + ";";
                    int response = komanda.ExecuteNonQuery();
                    MessageBox.Show("Račun je uspešno izmenjen!");
                }
                else
                {
                    //ovde ide dodavanje
                    partneriObjekat = new Partneri();
                    komanda.CommandText = string.Format("INSERT INTO `parziro`(`PARZIROID`, `PARZIROPAR`, `PARZIROOZN`, `PARZIROOZX`, `PARZIROPNB`, `PARZIROBAN`, PARZIRORBR) VALUES ("
                        + partneriObjekat.VratiPovecanIDRacuna() + "," + Convert.ToInt32(idPartnera) + ",'" + brojZiroRacuna.Text + "', '"
                        + Razno.IzbrisiPojedineKaraktereIzStringa(brojZiroRacuna.Text.ToUpper()) + "', '" + pozivNaBroj.Text + "','" + banka.Text + "', 2)");
                    int response = komanda.ExecuteNonQuery();
                    MessageBox.Show("Uspešno dodat novi račun");
                }
            }
            else
            {
                MessageBox.Show("Morate popuniti obavezno polje broj žiro računa");
            }
        }
        public void ObrisiRacunPremaID(String idRacuna)
        {
            try
            {
                //konekcija sa bazom
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = "DELETE FROM PARZIRO WHERE PARZIROID=" + Convert.ToInt32(idRacuna) + " ;";
                komanda.ExecuteNonQuery();
                MessageBox.Show("Račun je uspešno obrisan!");
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                konekcija.Close();
            }
        }
        public void PopuniDataGridViewRacuni(DataGridView racuni, String idPartnera)
        {
            if (idPartnera.Length > 0)
            {
                try
                {
                    //ciscenje i spremanje datagridview-a
                    racuni.DataSource = null;
                    racuni.Rows.Clear();
                    racuni.Refresh();

                    //konekcija sa bazom i punjenje datatable-a
                    konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                    komanda.Connection = konekcija;
                    komanda.CommandText = "SELECT PARZIROID, PARZIROOZN, PARZIROPNB FROM PARZIRO WHERE PARZIROPAR=" + Convert.ToInt32(idPartnera) + ";";
                    dataTable = new DataTable();
                    adapter = new MySqlDataAdapter();
                    adapter.SelectCommand = komanda;
                    adapter.Fill(dataTable);

                    adapter.Dispose();
                    konekcija.Close();

                    for (int i = 0; i < dataTable.Rows.Count; i++)
                    {
                        racuni.Rows.Add(dataTable.Rows[i][0], dataTable.Rows[i][1], dataTable.Rows[i][2]);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                }
                finally
                {
                    dataTable.Clear();
                    adapter.Dispose();
                    konekcija.Close();
                }
            }
        }

        private String CheckBoxDiliN(CheckBox checkBox)
        {
            if (checkBox.Checked == true)
            {
                return "D";
            }
            else
            {
                return "N";
            }
        }
        private void PodesiCheckBox(String provera, CheckBox checkBox)
        {
            if (provera.Equals("D"))
            {
                checkBox.Checked = true;
            }
            else
            {
                checkBox.Checked = false;
            }
        }

        //poreklo
        private String ComboBoxPorekloPartnera(ComboBox combo)
        {
            if (combo.SelectedItem.ToString().Equals("Domaći"))
            {
                return "DOM";
            }
            else if (combo.SelectedItem.ToString().Equals("Inostrani"))
            {
                return "INO";
            }
            else if (combo.SelectedItem.ToString().Equals("Kosovo i Metohija"))
            {
                return "KIM";
            }
            else
            {
                return "";
            }
        }
        private void PodesiComboBoxPorekloPartnera(string poreklo, ComboBox combo)
        {
            if (poreklo.Equals("DOM"))
            {
                combo.SelectedIndex = combo.Items.IndexOf("Domaći");
            }
            else if (poreklo.Equals("INO"))
            {
                combo.SelectedIndex = combo.Items.IndexOf("Inostrani");
            }
            else if (poreklo.Equals("KIM"))
            {
                combo.SelectedIndex = combo.Items.IndexOf("Kosovo i Metohija");
            }
            else
            {
                combo.SelectedIndex = 0;
            }
        }

        //vrsta
        private String ComboBoxVrstaPartnera(ComboBox combo)
        {
            if (combo.SelectedItem.ToString().Equals("Kupci/Dobavljači"))
            {
                return "KD";
            }
            else if (combo.SelectedItem.ToString().Equals("Banke"))
            {
                return "BA";
            }
            else
            {
                return "";
            }
        }
        private void PodesiComboBoxVrstaPartnera(string vrsta, ComboBox combo)
        {
            if (vrsta.Equals("KD"))
            {
                combo.SelectedIndex = combo.Items.IndexOf("Kupci/Dobavljači");
            }
            else if (vrsta.Equals("BA"))
            {
                combo.SelectedIndex = combo.Items.IndexOf("Banke");
            }
            else
            {
                combo.SelectedIndex = 0;
            }
        }

        public void PopuniKontroleUPartnerFormi(string idPartnera, TextBox oznaka, TextBox naziv, TextBox naziv2, TextBox adresa, TextBox adresa2, TextBox posta,
            TextBox mesto, TextBox telefon, TextBox fax, TextBox maticniBroj, TextBox PIBJMBGRGB, TextBox PDV, TextBox sifraDelatnosti, CheckBox obveznikPDV, TextBox webSajt,
            TextBox eMail, ComboBox Region, ComboBox poreklo, ComboBox vrsta, TextBox napomena)
        {
            if (idPartnera.Length > 0)
            {
                try
                {
                    regionObjekat = new Region();
                    konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                    konekcija.Open();
                    komanda.Connection = konekcija;
                    komanda.CommandText = "SELECT PARTNEROZN, PARTNERNA1, PARTNERNA2, PARTNERAD1, PARTNERAD2, PARTNERPBR, PARTNERMES, PARTNERTEL, PARTNERFAX,"
                        + " PARTNERMBR, PARTNERPIB, PARTNERPDV, PARTNERSDL, PARTNEROBP, PARTNERWWW, PARTNEREML, PARTNERREG, PARTNERGDE, PARTNERVRS, PARTNEROPI"
                        + " FROM PARTNERI WHERE PARTNERID=" + Convert.ToInt32(idPartnera) + "";
                    datareader = komanda.ExecuteReader();
                    while (datareader.Read())
                    {
                        oznaka.Text = datareader.GetValue(0).ToString();
                        naziv.Text = datareader.GetValue(1).ToString();
                        naziv2.Text = datareader.GetValue(2).ToString();
                        adresa.Text = datareader.GetValue(3).ToString();
                        adresa2.Text = datareader.GetValue(4).ToString();
                        posta.Text = datareader.GetValue(5).ToString();
                        mesto.Text = datareader.GetValue(6).ToString();
                        telefon.Text = datareader.GetValue(7).ToString();
                        fax.Text = datareader.GetValue(8).ToString();
                        maticniBroj.Text = datareader.GetValue(9).ToString();
                        PIBJMBGRGB.Text = datareader.GetValue(10).ToString();
                        PDV.Text = datareader.GetValue(11).ToString();
                        sifraDelatnosti.Text = datareader.GetValue(12).ToString();
                        PodesiCheckBox(datareader.GetValue(13).ToString(), obveznikPDV);
                        webSajt.Text = datareader.GetValue(14).ToString();
                        eMail.Text = datareader.GetValue(15).ToString();
                        Region.SelectedIndex = Region.Items.IndexOf(regionObjekat.VratiOznakuRegionaNaOsnovuID(Convert.ToInt32(datareader.GetValue(16).ToString())));
                        PodesiComboBoxPorekloPartnera(datareader.GetValue(17).ToString(), poreklo);
                        PodesiComboBoxVrstaPartnera(datareader.GetValue(18).ToString(), vrsta);
                        napomena.Text = datareader.GetValue(19).ToString();
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                }
                finally
                {
                    datareader.Close();
                    konekcija.Close();
                }
            }
        }

        public int VratiPovecanID()
        {
            int rezultat = 0;
            try
            {
                //konekcija sa bazom
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = "SELECT MAX(PARTNERID) FROM PARTNERI;";
                datareader = komanda.ExecuteReader();
                datareader.Read();
                rezultat = Convert.ToInt32(datareader.GetValue(0));
                rezultat++;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                datareader.Close();
                konekcija.Close();
            }
            return rezultat;
        }

        public void DodajIzmeniPartnera(string idPartnera, TextBox oznaka, TextBox naziv, TextBox naziv2, TextBox adresa, TextBox adresa2, TextBox posta,
            TextBox mesto, TextBox telefon, TextBox fax, TextBox maticniBroj, TextBox PIBJMBGRGB, TextBox PDV, TextBox sifraDelatnosti, CheckBox obveznikPDV, TextBox webSajt,
            TextBox eMail, ComboBox Region, ComboBox poreklo, ComboBox vrsta, TextBox napomena)
        {
            try
            {
                partneriObjekat = new Partneri();
                regionObjekat = new Region();
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                if (idPartnera.Length > 0)
                {
                    komanda.CommandText = @"UPDATE `partneri` SET `PARTNEROZN`='" + oznaka.Text + "',`PARTNERNA1`='" + naziv.Text + "',`PARTNERNA2`='"
                        + naziv2.Text + "',`PARTNERAD1`='" + adresa.Text + "',`PARTNERAD2`='" + adresa2.Text + "',`PARTNERPBR`='" + posta.Text + "',`PARTNERMES`='"
                        + mesto.Text + "',`PARTNERTEL`='" + telefon.Text + "',`PARTNERFAX`='" + fax.Text + "',`PARTNERMBR`='" + maticniBroj.Text + "',`PARTNERPIB`='"
                        + PIBJMBGRGB.Text + "',`PARTNERPDV`='" + PDV.Text + "',`PARTNERSDL`='" + sifraDelatnosti.Text + "',`PARTNEROBP`='" + obveznikPDV.Text + "',`PARTNERWWW`='"
                        + webSajt.Text + "',`PARTNEREML`='" + eMail.Text + "',`PARTNERREG`="
                        + regionObjekat.VratiIDRegionaNaOsnovuOznake(Region.SelectedItem.ToString()) + ",`PARTNERGDE`='"
                        + ComboBoxPorekloPartnera(poreklo) + "',`PARTNEROPI`='" + napomena.Text + "',`PARTNERVRS`='"
                        + ComboBoxVrstaPartnera(vrsta) + "' WHERE PARTNERID=" + Convert.ToInt32(idPartnera) + "";
                }
                else
                {
                    komanda.CommandText = string.Format("INSERT INTO partneri(partnerid, partnerozn, partnerozx, partnerna1, partnerna2, partnerad1, partnerad2, "
                        + " partnerpbr, partnermes, partnertel, partnerfax, partnermbr, partnerpib, partnerpdv, partnersdl, partnerobp, partnerwww, partnereml, "
                        + " partnerreg, partnergde, partneropi, partnervrs) VALUES (" + partneriObjekat.VratiPovecanID() + ", '" + oznaka.Text + "', '"
                        + Razno.IzbrisiPojedineKaraktereIzStringa(oznaka.Text.ToUpper()) + "', '" + naziv.Text + "', '" + naziv2.Text + "', '" + adresa.Text + "', '" + adresa2.Text + "', '"
                        + posta.Text + "', '" + mesto.Text + "', '" + telefon.Text + "', '" + fax.Text + "', '" + maticniBroj.Text + "', '" + PIBJMBGRGB.Text + "', '" + PDV.Text + "', '"
                        + sifraDelatnosti.Text + "', '" + CheckBoxDiliN(obveznikPDV) + "', '" + webSajt.Text + "', '" + eMail.Text + "', "
                        + regionObjekat.VratiIDRegionaNaOsnovuOznake(Region.SelectedItem.ToString()) + ", '" + ComboBoxPorekloPartnera(poreklo) + "', '" + napomena.Text + "', '"
                        + ComboBoxVrstaPartnera(vrsta) + "');");
                }
                int response = komanda.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                konekcija.Close();
            }
        }

        public void PretragaPartneraKalkulacijaIzlazniRacun(TextBox izborPartnera, TextBox sifraPartnera, TextBox nazivPartnera, TextBox mestoPartnera, CheckBox obveznikPDV)
        {
            try
            {
                //konekcija sa bazom i punjenje datatable-a
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                dataTable = new DataTable();
                adapter = new MySqlDataAdapter();
                if (izborPartnera.Text.Trim().Length <= 0)
                {
                    komanda.CommandText = "SELECT PARTNERID, PARTNEROZN, PARTNERMES, PARTNEROBP FROM PARTNERI;";
                    adapter.SelectCommand = komanda;
                    adapter.Fill(dataTable);
                }
                else
                {
                    komanda.CommandText = "SELECT PARTNERID, PARTNEROZN, PARTNERMES, PARTNEROBP FROM PARTNERI WHERE PARTNEROZN LIKE ('%" + izborPartnera.Text + "%');";
                    adapter.SelectCommand = komanda;
                    adapter.Fill(dataTable);
                }

                if (dataTable.Rows.Count <= 0)
                {
                    //ukoliko je dataTable prazan
                    MessageBox.Show("Ne postoji takav Partner!");
                    izborPartnera.Text = "";
                    izborPartnera.Focus();
                }
                else if (dataTable.Rows.Count > 1)
                {
                    //ukoliko datatable ima vise od jednog reda
                    partneriFormaObjekat = new partneriForma(izborPartnera.Text);
                    partneriFormaObjekat.ShowDialog();
                }
                else
                {
                    //svaki ostali slucaj (ukoliko dataTable ima 1 red)
                    kalkulacijaForma.idPartnera = Convert.ToInt32(dataTable.Rows[0]["PARTNERID"].ToString());
                    IzlazniRacun.izlazniRacunForma.idPartnera = Convert.ToInt32(dataTable.Rows[0]["PARTNERID"].ToString());
                    PJedinica.PJedinicaForma.idPartnera = Convert.ToInt32(dataTable.Rows[0]["PARTNERID"].ToString());
                    sifraPartnera.Text = dataTable.Rows[0]["PARTNERID"].ToString();
                    nazivPartnera.Text = dataTable.Rows[0]["PARTNEROZN"].ToString();
                    mestoPartnera.Text = dataTable.Rows[0]["PARTNERMES"].ToString();
                    PodesiCheckBox(dataTable.Rows[0]["PARTNEROBP"].ToString(), obveznikPDV);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                dataTable.Clear();
                adapter.Dispose();
                konekcija.Close();
            }
        }

        public void PopuniKontrolePartnera(int idPartnera, TextBox sifraPartnera, TextBox nazivPartnera, TextBox mestoPartnera, CheckBox obveznikPDV)
        {
            if (idPartnera != 0 && idPartnera != null)
            {
                try
                {
                    konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                    konekcija.Open();
                    komanda.Connection = konekcija;
                    komanda.CommandText = "SELECT PARTNERID, PARTNEROZN, PARTNERMES, PARTNEROBP FROM PARTNERI WHERE PARTNERID=" + idPartnera + "";
                    datareader = komanda.ExecuteReader();
                    while (datareader.Read())
                    {
                        sifraPartnera.Text = datareader.GetValue(0).ToString();
                        nazivPartnera.Text = datareader.GetValue(1).ToString();
                        mestoPartnera.Text = datareader.GetValue(2).ToString();
                        PodesiCheckBox(datareader.GetValue(3).ToString(), obveznikPDV);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                }
                finally
                {
                    datareader.Close();
                    konekcija.Close();
                }
            }
            else {
                sifraPartnera.Text = "";
                nazivPartnera.Text = "";
                mestoPartnera.Text = "";
            }
        }

        public int Vrati1ili0NaOsnovuPDVObveznik(int idPartnera)
        {
            int rezultat = 1;
            try
            {
                //konekcija sa bazom
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = "SELECT PARTNEROBP FROM PARTNERI WHERE PARTNERID=" + idPartnera + ";";
                datareader = komanda.ExecuteReader();
                string rez = "";
                while (datareader.Read())
                {
                    rez = datareader.GetValue(0).ToString();
                }
                if (rez.Equals("D"))
                {
                    rezultat = 1;
                }
                else
                {
                    rezultat = 0;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                datareader.Close();
                konekcija.Close();
            }
            return rezultat;
        }
    }
}
